#pragma once

#include "Dock.h"

namespace LevelUpdateReturnStatus {
	enum Enum {
		DO_NOTHING,
		START_SHIP,
		SHOW_OVERLAY,
		LEVEL_COMPLETE,
	};
}

class Dock;
class GameplayBackground;
class Ship;

class ILevel {

	public:
	virtual void Load( Dock* docks, GameplayBackground* background ) = 0;
	virtual void Unload() = 0;
	
	// return -1 todo nothing
	// return 1 to start a new ship with the provided data
	// return 2 to show an overlay message
	// return 3 if the level is over
	virtual LevelUpdateReturnStatus::Enum Update( DockType::Enum *type, CIwFVec2* p1, CIwFVec2* p2, float dt ) = 0;
	
	virtual void Draw () = 0;
	
	// gets called when a new ship was added
	virtual void ShipAdded( Ship *ship ) = 0;
	virtual void ShipOutOfScreen( Ship *ship ) = 0;
};